package org.dxy.trigger.http.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dxy.api.dto.*;
import org.dxy.api.response.R;
import org.dxy.infrastructure.entity.query.ProcessViewEntity;

/**
 * 工序应用服务接口
 * @author dxy
 */
public interface ProcessApplicationService {
    
    /**
     * 创建工序
     */
    R<Long> create(CreateProcessRequestDto dto);
    
    /**
     * 开始执行工序
     */
    R<Void> start(StartProcessRequestDto dto);
    
    /**
     * 暂停工序
     */
    R<Void> pause(PauseProcessRequestDto dto);
    
    /**
     * 恢复工序
     */
    R<Void> resume(ResumeProcessRequestDto dto);
    
    /**
     * 完成工序
     */
    R<Void> complete(CompleteProcessRequestDto dto);
    
    /**
     * 变更工序步骤
     */
    R<Void> changeStep(ChangeProcessStepRequest dto);
    
    /**
     * 工序质量检测
     */
    R<Void> checkQuality(CheckProcessQualityRequestDto dto);
    
    /**
     * 工序挂起
     */
    R<Void> hold(HoldProcessRequestDto dto);
    
    /**
     * 工序解除挂起
     */
    R<Void> release(ReleaseProcessRequestDto dto);
    
    /**
     * 工序返工
     */
    R<Void> rework(ReworkProcessRequestDto dto);
    
    /**
     * 工序测量参数记录
     */
    R<Void> recordMeasurement(RecordProcessMeasurementRequestDto dto);
    
    /**
     * 工序分配
     */
    R<Void> assign(AssignProcessRequest dto);
    
    /**
     * 分页查询工序列表
     */
    R<Page<ProcessViewEntity>> list(Page<ProcessViewEntity> page, ProcessViewEntity query);
    
    /**
     * 根据ID查询工序详情
     */
    R<ProcessViewEntity> getById(Long processId);
    
    /**
     * 根据状态分页查询工序
     */
    R<Page<ProcessViewEntity>> getByStatus(Page<ProcessViewEntity> page, String status);
    
    /**
     * 删除工序
     */
    R<Void> delete(Long processId);
    
    /**
     * 批量删除工序
     */
    R<Void> batchDelete(java.util.List<Long> processIds);
}